// 给你一个长度为 n 的整数数组 nums，其中 n > 1，返回输出数组 output ，其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/product-of-array-except-self
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

// 错误解法，还是需要使用除法

// 执行用时：
// 20 ms
// , 在所有 C++ 提交中击败了
// 88.19%
// 的用户
// 内存消耗：
// 23.2 MB
// , 在所有 C++ 提交中击败了
// 95.76%
// 的用户

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<set>
#include<queue>
using namespace std;
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int cnt_zero =0;
        vector<int> res(nums.size(),0);
        for(int i=0;i<nums.size();i++){
            if(nums[i]==0){
                cnt_zero++;
            }
        }
        if(cnt_zero>1){
            return res;
        }
        else if(cnt_zero == 1){
            int temp = 1;
            int pos_zero;
            for(int i=0;i<nums.size();i++){
                if(nums[i] == 0){
                    pos_zero = i;
                }   
                else{
                    temp =temp*nums[i];
                }
            }
            res[pos_zero] = temp;
            return res;
        }
        else{
            long long temp = 1;
            for(int i=1;i<nums.size();i++){
                temp = temp * nums[i];
            }
            res[0]=temp;
            for(int i=1;i<nums.size();i++){
                long long temp2 = (temp/nums[i])*nums[0];
                res[i] = temp2;
            }
            return res;
        }
    }
};